/**
 *	@file	cb_def.h
 *	@brief	カスタムボール　リテラル定義ファイル
 *	@author	Miyuki Iwasawa
 *	@date	08.04.11
 */

#ifndef __H_CB_DEF_H__
#define __H_CB_DEF_H__


#define CB_DEF_EDIT_OFF			(0)
#define CB_DEF_EDIT_ON			(1)

#define CB_DEF_PAGE_ITEMS		(8)
#define CB_DEF_PAGE_MAX			(CB_DEF_ITEM_DATA_NUM / CB_DEF_PAGE_ITEMS)

#define CB_DEF_BTN_PAL_NUM		(3)
#define CB_DEF_UD_BTN_PAL_NO	(1)
#define CB_DEF_EYE_BTN_PAL_NO	(1)
#define CB_DEF_BTN_PAL_NO		(0)
#define CB_DEF_CUR_BTN_PAL_NO	(2)

/// ----- 定義 ----------------------

#define CB_DEF_SEAL_OFS_X	(+7 * 8)
#define CB_DEF_SEAL_OFS_Y	(-2 * 8)

#define CB_DEF_POKE_RETURN_WAIT	(30)

#define CB_DEF_FADE_GRAY	(10)

#define SEAL_HIT_SIZE_X		(10)
#define SEAL_HIT_SIZE_Y		(10)
#define SEAL_SIZE_16x16		(0)
#define SEAL_SIZE_32x32		(1)

#define SEAL_CHAR_START		(CB__SEAL_00_NCGR_BIN)

#define SEAL_NUM_PRINT_X	(-1 + 8)
#define SEAL_NUM_PRINT_Y	(0)

/// -----------------------------------

#define CB_DEF_POKE_NOT_INDEX	(0xff)
#define CB_DEF_HEAP_SIZE		(0x80000)

#define CB_DEF_MSG_END_KEY		(PAD_BUTTON_A | PAD_BUTTON_B | PAD_BUTTON_X | PAD_BUTTON_Y | \
								 PAD_KEY_UP	  | PAD_KEY_DOWN | PAD_KEY_LEFT | PAD_KEY_RIGHT)


#define CB_DEF_OBJ_MAX					(64 + 64)		///< main + sub
#define CB_DEF_VRAM_TRANSFER_TASK_NUM	(BATTLE_VRAM_TRANSFER_TASK_NUM)

#define CB_DEF_STRING_BG_FRM			(GF_BGL_FRAME1_M)
#define CB_DEF_SINGLE_BG_FRM			(GF_BGL_FRAME2_M)
#define CB_DEF_FIELD_BG_FRM				(GF_BGL_FRAME3_M)

#define CB_DEF_STRING_SUB_BG_FRM		(GF_BGL_FRAME0_S)
#define CB_DEF_BALL_SUB_BG_FRM			(GF_BGL_FRAME1_S)
#define CB_DEF_EDIT_SUB_BG_FRM			(GF_BGL_FRAME3_S)
#define CB_DEF_LIST_SUB_BG_FRM			(GF_BGL_FRAME2_S)

#define CB_PLANE_LIST					(GX_PLANEMASK_BG2)

enum {
	CB_BG_PRI_SCR_STRING = 0,
	CB_BG_PRI_SCR_SELECT = 2,
	CB_BG_PRI_SCR_FIELD  = 3,
	CB_BG_PRI_SCR_FIELD_TOP  = 1,

	CB_BG_PRI_SCR_SUB_STRING = 0,
	CB_BG_PRI_SCR_LIST = 1,
	CB_BG_PRI_SCR_BALL = 2,
	CB_BG_PRI_SCR_EDIT_TOP = 1,
	CB_BG_PRI_SCR_EDIT = 3,
};

enum {
	///< ポケモンアイコン
	CB_ENUM_ICON_CHAR_ID	= 15000,
	CB_ENUM_ICON_PLTT_ID	= 16000,
	CB_ENUM_ICON_CELL_ID	= 17000,
	CB_ENUM_ICON_CELLANM_ID = 18000,

	///< シール
	CB_ENUM_SEAL_CHAR_ID	= 20000,
	CB_ENUM_SEAL_PLTT_ID	= 21000,
	CB_ENUM_SEAL_CELL_ID	= 22000,
	CB_ENUM_SEAL_CELLANM_ID = 23000,

	///< ボタン
	CB_ENUM_BTN_CHAR_ID		= 25000,
	CB_ENUM_BTN_EYE_CHAR_ID	= 35000,
	CB_ENUM_BTN_PLTT_ID		= 26000,
	CB_ENUM_BTN_CELL_ID		= 27000,
	CB_ENUM_BTN_CELLANM_ID	= 28000,
	CB_ENUM_BTN_SEAL		= 0,
	CB_ENUM_BTN_ETC			= 1,

	///< ボタンカラー
	CB_ENUM_FONT_OMA_BTN_PLTT_ID = 30000,

	///< ぴこぴこ
	CB_ENUM_PIKO_CHAR_ID		= 45000,
	CB_ENUM_PIKO_PLTT_ID		= CB_ENUM_BTN_PLTT_ID,
	CB_ENUM_PIKO_CELL_ID		= 47000,
	CB_ENUM_PIKO_CELLANM_ID		= 48000,
};
#define CB_DEF_ARC_ID_POKE_ICON_GET(n)	((n) + CB_ENUM_ICON_CHAR_ID)
#define CB_DEF_ARC_ID_SEAL_GET(n)		((n) + CB_ENUM_SEAL_CHAR_ID)
#define CB_DEF_ARC_ID_BTN_GET(n)		((n) + CB_ENUM_BTN_CHAR_ID)

#define CB_DEF_ARC_ID_OFS		(11000)
#define CB_DEF_ARC_ID_GET(n)	((n) + CB_DEF_ARC_ID_OFS)

#define CB_DEF_ROW				(3)
#define CB_DEF_LINE				(4)
#define CB_DEF_CUR_MOVE_UD(n)	(n / CB_DEF_LINE)


///< パレット(上下管理)
enum {
	///< 上画面
	CB_ENUM_PAL_SEL_BG		= 0,
	CB_ENUM_PAL_FLD_BG		= 1,
	CB_ENUM_PAL_FLD_BG2		= 2,

	CB_ENUM_PAL_SBOX		= 11,
	CB_ENUM_PAL_FRAME		= 12,
	CB_ENUM_PAL_MENU,
	CB_ENUM_PAL_FONT,
	CB_ENUM_PAL_BACK,

	///< 下画面
	CB_ENUM_PAL_BALL_BG		= 0,
	CB_ENUM_PAL_EDIT_BG		= 1,
	CB_ENUM_PAL_LIST_BG		= 3,
	CB_ENUM_PAL_SWITCH		= 5,
	CB_ENUM_PAL_SWITCH_RESERVED,

	CB_ENUM_PAL_NUM			= 11,
};

///< OBJ優先度(上下管理)
enum {
	CB_ENUM_BG_PRI_T_OBJ	= CB_BG_PRI_SCR_SELECT,

	CB_ENUM_OAM_PRI_BALL	= 40,
	CB_ENUM_OAM_PRI_ICON	= 10,
	CB_ENUM_OAM_PRI_CUR_1	= 20,
	CB_ENUM_OAM_PRI_CUR_2	= 25,

	CB_ENUM_BG_PRI_B_OBJ	= 1,
	CB_ENUM_BG_PRI_B_OBJ2	= 1,
	CB_ENUM_OAM_BTN_PRI		= 60,
};

///< ボールの状態
enum {
	CB_ENUM_BALL_STATE_FREE = 0,		///< フリー
	CB_ENUM_BALL_STATE_CUSTOM,			///< 編集済み
	CB_ENUM_BALL_STATE_CUSTOM_SET,		///< 編集済みかつポケモンにセット
	CB_ENUM_BALL_STATE_FREE_SET,		///< フリーでポケモンにセット
};

///< ウィンドウの種類
enum {
	WIN_T_MAIN		= 0,		///< 上画面の基本メッセージウィンドウ
	WIN_T_SEL,					///< 上画面の選択ウィンドウ
	WIN_T_EXIT,					///< 上画面のやめるウィンドウ
//	WIN_T_DEC,					///< 上画面の決定ウィンドウ

	WIN_B_MAIN,					///< 下画面の基本メッセージ
	WIN_B_MSG,					///< 下画面の基本メッセージ
	WIN_B_LIST_1,				///< リスト
	WIN_B_LIST_2,				///< リスト
	WIN_B_LIST_3,				///< リスト
	WIN_B_LIST_4,				///< リスト
	WIN_B_LIST_5,				///< リスト
	WIN_B_LIST_6,				///< リスト
	WIN_B_LIST_7,				///< リスト
	WIN_B_LIST_8,				///< リスト

	WIN_MAX,
};

enum {
	WIN_B_BTN_1 = 0,
	WIN_B_BTN_2,

	WIN_SUB_MAX
};


#define CB_DEF_BMPWIN_MAX				(CB_ENUM_WIN_MAX)

///< サブシーケンス
enum {
	///< 編集
	CBS_CUSTOM_INIT			= 0,
	CBS_CUSTOM_T_FADE_OUT,
	CBS_CUSTOM_T_FADE_OUT_WAIT,
	CBS_CUSTOM_T_FIELD_FADE_OUT_WAIT,
	CBS_CUSTOM_MAIN,
	CBS_CUSTOM_CON,		///< pt確認
	CBS_CUSTOM_DEC,		///< けってい
	CBS_CUSTOM_END,		///< やめる
	CBS_CUSTOM_T_FADE_IN,
	CBS_CUSTOM_T_FADE_IN_2,
	CBS_CUSTOM_T_FADE_IN_WAIT,
	CBS_CUSTOM_EXIT,
};

enum {
	///< 選択
	CBS_SELECT_INIT			= 0,
	CBS_SELECT_WIPE_IN,
	CBS_SELECT_WIPE_IN_WAIT,
	CBS_SELECT_MAIN,
	CBS_SELECT_MENU,
	CBS_SELECT_WIPE_OUT,
	CBS_SELECT_WIPE_OUT_WAIT,
};

enum {
	///< セット
	CBS_SET_INIT			= 0,
	CBS_SET_WIPE_OUT,
	CBS_SET_WIPE_OUT_WAIT,
};

enum {
	///< はずす
	CBS_REM_INIT			= 0,
	CBS_REM_MAIN,
	CBS_REM_END,
};

enum {
	///< いれかえ
	CBS_CHANGE_INIT			= 0,
	CBS_CHANGE_MAIN,
	CBS_CHANGE_KEY_WAIT,
	CBS_CHANGE_END,
};



#define CB_DEF_KEEP_SEQ_SET		(0xff)

#define BMPL_USE_BTW_WIN_OFS		(0)	///< 枠とBMPの間におく気休めキャラ

// ---- ↓↓↓ここから下画面で同じ設定を使う -----
#define BMPL_T_TALK_CHAR_OFS	(1)		///< 枠のキャラ開始位置
#define BMPL_T_MENU_CHAR_OFS	(BMPL_T_TALK_CHAR_OFS + TALK_WIN_CGX_SIZ)
#define BMPL_T_USE_OFS			(BMPL_T_MENU_CHAR_OFS + SBOX_WINCGX_SIZ)	///< bmpwin追加開始位置
#define BMPL_CHAR_OFS			(BMPL_USE_BTW_WIN_OFS + BMPL_T_USE_OFS)
// ---- ↑↑↑ココまで同じ設定 -----


// ---- ↓↓↓上画面ウィンドウ ----
#define BMPL_B_MAIN_X			(1)			///< メイン1
#define BMPL_B_MAIN_Y			(21)
#define BMPL_B_MAIN_SX			(20)
#define BMPL_B_MAIN_SY			(2)
#define BMPL_B_MAIN_SIZE		(BMPL_B_MAIN_SX * BMPL_B_MAIN_SY)
#define BMPL_B_MAIN_SIZE_END	(BMPL_B_MAIN_SIZE + BMPL_CHAR_OFS)
#define BMPL_B_MAIN_CGX			(BMPL_CHAR_OFS)

#define BMPL_T_MAIN_X			(1)
#define BMPL_T_MAIN_Y			(21)
#define BMPL_T_MAIN_SX			(30)	///<
#define BMPL_T_MAIN_SY			(2)
#define BMPL_T_MAIN_SIZE		(BMPL_T_MAIN_SX * BMPL_T_MAIN_SY)
#define BMPL_T_MAIN_CGX			(BMPL_CHAR_OFS)
#define BMPL_T_MAIN_SIZE_END	(BMPL_T_MAIN_SIZE + BMPL_T_MAIN_CGX)

#define BMPL_T_EXIT_X			(23)
#define BMPL_T_EXIT_Y			(21)
#define BMPL_T_EXIT_SX			(8)	///<
#define BMPL_T_EXIT_SY			(2)
#define BMPL_T_EXIT_SIZE		(BMPL_T_EXIT_SX * BMPL_T_EXIT_SY)
#define BMPL_T_EXIT_CGX			(BMPL_T_MAIN_SIZE_END)
#define BMPL_T_EXIT_SIZE_END	(BMPL_T_EXIT_SIZE + BMPL_T_EXIT_CGX)

#if 0
#define BMPL_T_DEC_X			(15)
#define BMPL_T_DEC_Y			(21)
#define BMPL_T_DEC_SX			(8)	///<
#define BMPL_T_DEC_SY			(3)
#define BMPL_T_DEC_SIZE			(BMPL_T_DEC_SX * BMPL_T_DEC_SY)
#define BMPL_T_DEC_CGX			(BMPL_T_EXIT_SIZE_END)
#define BMPL_T_DEC_SIZE_END		(BMPL_T_DEC_SIZE + BMPL_T_DEC_CGX)
#endif

#define BMPL_T_MENU_X			(21)
#define BMPL_T_MENU_Y_1			(15-2)
#define BMPL_T_MENU_Y_2			(11)
#define BMPL_T_MENU_SX			(9)
#define BMPL_T_MENU_SY_1		(4+2)
#define BMPL_T_MENU_SY_2		(8)
#define BMPL_T_MENU_SY			(10)
#define BMPL_T_MENU_SIZE		(BMPL_T_MENU_SX * BMPL_T_MENU_SY)	///< でかいほうで計算
#define BMPL_T_MENU_CGX			(BMPL_T_EXIT_SIZE_END)	///< でかいほうで計算
#define BMPL_T_MENU_SIZE_END	(BMPL_T_MENU_SIZE + BMPL_T_MENU_CGX)

// ---- ↑↑↑上画面ウィンドウ設定 ----


// ---- ↓↓↓下画面ウィンドウ設定 ----
#define BMPL_B_MSG_X			(2)			///< メイン2
#define BMPL_B_MSG_Y			(1)
#define BMPL_B_MSG_SX			(27)
#define BMPL_B_MSG_SY			(4)
#define BMPL_B_MSG_SIZE			(BMPL_B_MSG_SX * BMPL_B_MSG_SY)
#define BMPL_B_MSG_CGX			(BMPL_CHAR_OFS)//(BMPL_B_MAIN_SIZE_END)
#define BMPL_B_MSG_SIZE_END		(BMPL_B_MSG_SIZE + BMPL_B_MSG_CGX)


#define BMPL_LIST_X1			(4-1)
#define BMPL_LIST_X2			(11-1)
#define BMPL_LIST_W				(3+1)//3
#define BMPL_LIST_H				(2)//2

///< 横並び
#define BMPL_B_LIST_1_X			(BMPL_LIST_X1)			///< リスト
#define BMPL_B_LIST_1_Y			(2)
#define BMPL_B_LIST_1_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_1_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_1_SIZE		(BMPL_B_LIST_1_SX * BMPL_B_LIST_1_SY)
#define BMPL_B_LIST_1_CGX		(BMPL_B_MSG_SIZE_END)
#define BMPL_B_LIST_1_SIZE_END	(BMPL_B_LIST_1_SIZE + BMPL_B_MSG_SIZE_END)

#define BMPL_B_LIST_2_X			(BMPL_LIST_X2)			///< リスト
#define BMPL_B_LIST_2_Y			(2)
#define BMPL_B_LIST_2_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_2_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_2_SIZE		(BMPL_B_LIST_2_SX * BMPL_B_LIST_2_SY)
#define BMPL_B_LIST_2_SIZE_END	(BMPL_B_LIST_2_SIZE + BMPL_B_LIST_1_SIZE_END)

#define BMPL_B_LIST_3_X			(BMPL_LIST_X1)			///< リスト
#define BMPL_B_LIST_3_Y			(5)
#define BMPL_B_LIST_3_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_3_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_3_SIZE		(BMPL_B_LIST_3_SX * BMPL_B_LIST_3_SY)
#define BMPL_B_LIST_3_SIZE_END	(BMPL_B_LIST_3_SIZE + BMPL_B_LIST_2_SIZE_END)

#define BMPL_B_LIST_4_X			(BMPL_LIST_X2)			///< リスト
#define BMPL_B_LIST_4_Y			(5)
#define BMPL_B_LIST_4_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_4_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_4_SIZE		(BMPL_B_LIST_4_SX * BMPL_B_LIST_4_SY)
#define BMPL_B_LIST_4_SIZE_END	(BMPL_B_LIST_4_SIZE + BMPL_B_LIST_3_SIZE_END)

#define BMPL_B_LIST_5_X			(BMPL_LIST_X1)			///< リスト
#define BMPL_B_LIST_5_Y			(8)
#define BMPL_B_LIST_5_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_5_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_5_SIZE		(BMPL_B_LIST_5_SX * BMPL_B_LIST_5_SY)
#define BMPL_B_LIST_5_SIZE_END	(BMPL_B_LIST_5_SIZE + BMPL_B_LIST_4_SIZE_END)

#define BMPL_B_LIST_6_X			(BMPL_LIST_X2)			///< リスト
#define BMPL_B_LIST_6_Y			(8)
#define BMPL_B_LIST_6_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_6_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_6_SIZE		(BMPL_B_LIST_6_SX * BMPL_B_LIST_6_SY)
#define BMPL_B_LIST_6_SIZE_END	(BMPL_B_LIST_6_SIZE + BMPL_B_LIST_5_SIZE_END)

#define BMPL_B_LIST_7_X			(BMPL_LIST_X1)			///< リスト
#define BMPL_B_LIST_7_Y			(11)
#define BMPL_B_LIST_7_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_7_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_7_SIZE		(BMPL_B_LIST_7_SX * BMPL_B_LIST_7_SY)
#define BMPL_B_LIST_7_SIZE_END	(BMPL_B_LIST_7_SIZE + BMPL_B_LIST_6_SIZE_END)

#define BMPL_B_LIST_8_X			(BMPL_LIST_X2)			///< リスト
#define BMPL_B_LIST_8_Y			(11)
#define BMPL_B_LIST_8_SX		(BMPL_LIST_W)
#define BMPL_B_LIST_8_SY		(BMPL_LIST_H)
#define BMPL_B_LIST_8_SIZE		(BMPL_B_LIST_8_SX * BMPL_B_LIST_8_SY)
#define BMPL_B_LIST_8_SIZE_END	(BMPL_B_LIST_8_SIZE + BMPL_B_LIST_7_SIZE_END)

#define CB_DEF_TPBG_CHAR_OFS			(BMPL_B_LIST_8_SIZE_END)

#define CB_DEF_SW_X						(25)
#define CB_DEF_SW_Y						(6)
// ---- ↑↑↑下画面ウィンドウ設定 ----


#define CB_DEF_ICON_OFS_X				(-16)
#define CB_DEF_ICON_OFS_Y				(+12)

enum {
	CB_MODE_SELECT = 0,		///< 編集対象を選ぶ画面
	CB_MODE_EDIT,			///< 編集画面
//	CB_MODE_SETTING_SET,	///< セッティング -- はめる
	CB_MODE_SETTING_REMOVE,	///< セッティング -- はずす
	CB_MODE_CHANGE,			///< 入れ替え
	CB_MODE_END,			///< 終了 とにかく最後はココを経由する設計
};

#define CB_DEF_MODE_MAX		(CB_MODE_END)
#define CB_DEF_MENU_MAX		(5)

enum {
	CB_ENUM_MENU_FUNC_RET_NONE = 0,
	CB_ENUM_MENU_FUNC_RET_SEQ_PREV,
	CB_ENUM_MENU_FUNC_RET_SEQ_NEXT,
};

// -----------------------------------------
//
//	□メッセージ関連
//
// -----------------------------------------
#define CB_DEF_MSG_ARC				(NARC_msg_ball_custom_dat)		///< 通常メッセージ

#define CB_DEF_MENU_MSG_LEN		(30*2)
#define CB_DEF_INFO_MSG_LEN		(30*2)

#define CB_DEF_NOT_HOLD			(0xFF)

#define CB_DEF_INFO_MSG_START	(msg_info_00_01)
enum {
	CB_MSG_ID_CLEAR  = 0xFFFF,					///< クリア
	CB_MSG_ID_CB_SEL = CB_DEF_INFO_MSG_START,	///< カプセル選んでください
	CB_MSG_ID_CB_HDYD,							///< カプセルどうする？
	CB_MSG_ID_CB_REM,							///< カプセルをはずした
	CB_MSG_ID_CB_REP,							///< どれと入れ替える？
	CB_MSG_ID_CB_REP_END,						///< 入れ替えた
	CB_MSG_ID_EDIT_END,							///< カプセルにシールをはった
	CB_MSG_ID_CON,								///< 確認中
	CB_MSG_ID_END_QUE,							///< カプセルデザインを変えないでやめますか？
	CB_MSG_ID_NG,								///< もうおけないよ！
	CB_MSG_ID_ZERO,								///< もうシールないよ！
};

// -----------------------------------------
//
//	□通常配置ボタン
//
// -----------------------------------------
#define CB_DEF_MAIN_BG_PAL	(0)
#define CB_DEF_MAIN_BG2_PAL	(1)
#define CB_DEF_SUB_BG_PAL	(0)
enum {
	CB_ENUM_BHIT_SEAL_1 = 0,	///< seal 左
	CB_ENUM_BHIT_SEAL_2,
	CB_ENUM_BHIT_SEAL_3,
	CB_ENUM_BHIT_SEAL_4,
	CB_ENUM_BHIT_SEAL_5,		///< seal 右
	CB_ENUM_BHIT_SEAL_6,
	CB_ENUM_BHIT_SEAL_7,
	CB_ENUM_BHIT_SEAL_8,
	CB_ENUM_BHIT_UP,
	CB_ENUM_BHIT_DOWN,
	CB_ENUM_BHIT_CON,
	CB_ENUM_BHIT_DEC,
	CB_ENUM_BHIT_END,

	CB_ENUM_BTN_NUM,		///< BHIT_SEALに引継ぎ
};

enum {
	CB_BHIT_SEAL_0	= CB_ENUM_BTN_NUM,
	CB_BHIT_SEAL_1,
	CB_BHIT_SEAL_2,
	CB_BHIT_SEAL_3,
	CB_BHIT_SEAL_4,
	CB_BHIT_SEAL_5,
	CB_BHIT_SEAL_6,
	CB_BHIT_SEAL_7,

	CB_BHIT_SEAL_MAX,
};

#define CB_DEF_HIT_TBL_MAX	(CB_BHIT_SEAL_MAX)	///< 固定ボタン＋シール


#endif	//__H_CB_DEF_H__